import  java.io.Serializable;
import java.util.HashSet;
import java.util.Observable;



public class Document extends Observable implements Serializable {
	// ************************************************************************************************************
	// Attributs
	// ************************************************************************************************************

	private HashSet<Auteur> _auteur;
	private HashSet<MotTitre> _motTitre;
	private HashSet<MotCle> _theme;
	
	// ************************************************************************************************************
	// Constructeur
	// ************************************************************************************************************
	
	public Document(HashSet<Auteur> auteurs,HashSet<MotTitre> motTitres, HashSet<MotCle> motCles){
		_auteur= new HashSet<Auteur>();
		_motTitre= new HashSet<MotTitre>();
		_theme= new HashSet<MotCle>();
		for(Auteur a:auteurs ){
			this.setAuteur(a);
		}
		for(MotCle mc:motCles){
			this.setMotCle(mc);
		}
		for(MotTitre mt:motTitres){
			this.setMotTitre(mt);
		}

	}
	
	// ************************************************************************************************************
	// Méthodes privées
	// ************************************************************************************************************
	
	// ------------------------------------------------------------------------------------------------------------
	// Affecteurs
	
	public void setAuteur(Auteur a){
		boolean existe=false;
		for(Auteur aut:_auteur){
			if(aut==a){
				existe=true;
			}
		}
		if(existe==false){
			_auteur.add(a);	
		}
	}
	
	public void setMotTitre(MotTitre t){
		boolean existe=false;
		for(MotTitre mot:_motTitre){
			if(mot==t){
				existe=true;
			}
		}
		if(existe==false){
			_motTitre.add(t);
		}
	}
	
	public void setMotCle(MotCle c){
		boolean existe=false;
		for (MotCle m : _theme) {
			if(m==c) {
				existe=true;
			}
		}
		if (existe==false) {
			_theme.add(c);
		}
	}
	
	// ************************************************************************************************************
	// Méthodes publiques
	// ************************************************************************************************************

	// ------------------------------------------------------------------------------------------------------------
	// Accesseurs

	public HashSet<Auteur> getAuteur(){
		return _auteur;
	}

	public HashSet<MotCle> getMotCle() {
		return _theme;
	}
}

